package inference;

import basics.Vector;

public abstract class GraphFactor extends GraphNode {

	public enum Type {
		Sum, Product, Operation
	};

	private Type _type;

	public GraphFactor(String vname, Type t) {
		super(vname);

		_type = t;
	}

	public BeliefMessage to(GraphNode next) {
		return to(next, null);
	}

	// @Override
	// public BeliefMessage to(GraphNode next, String opt) {
	// // BeliefMessage m = new BeliefMessage();
	// // switch (_type) {
	// // case Sum:
	// // m.setValue(Vector.sum(parentFeatures(next)));
	// // case Product:
	// // m.setValue(Vector.product(parentFeatures(next)));
	// // }
	// //
	// // return m;
	//
	// return null;
	// }
	//
	@Override
	public BeliefMessage toCached(GraphNode next) {
		return toCached(next, null);
	}
	//
	// @Override
	// public BeliefMessage toCached(GraphNode next, String opt) {
	// return null;
	// }

}
